package cn.always.xiajia.admin.sys.client.impl;

import java.util.List;
import java.util.Set;

import javax.annotation.Resource;

import org.springframework.stereotype.Service;

import cn.always.xiajia.admin.client.api.sys.SysMenuApi;
import cn.always.xiajia.admin.sys.service.SysMenuService;
import cn.always.xiajia.admin.sys.service.SysUserRoleService;
import cn.always.xiajia.framework.mybatis.core.controller.BaseControllerX;
import lombok.extern.slf4j.Slf4j;

/**
 * 菜单权限管理
 * 
 * @author xgj
 *
 */
@Slf4j
@Service("sysMenuApi")
public class SysMenuApiImpl extends BaseControllerX implements SysMenuApi {

	@Resource
	protected SysMenuService sysMenuService;

	@Resource
	protected SysUserRoleService sysUserRoleService;

	/**
	 * 获得拥有多个角色的用户编号集合
	 *
	 * @param roleIds 角色编号集合
	 * @return 用户编号集合
	 */
	public Set<Long> getUserRoleIdListByRoleIds(List<Long> roleIds) {
		return sysUserRoleService.getUserIdByRoleIds(roleIds);
	}

	/**
	 * 判断是否有权限，任一一个即可
	 *
	 * @param userId 用户编号
	 * @param permissions 权限
	 * @return 是否
	 */
	public boolean hasAnyPermissions(Long userId, String... permissions) {
		return sysMenuService.hasAnyPermissions(userId, permissions);
	}

	/**
	 * 判断是否有角色，任一一个即可
	 *
	 * @param userId 用户编号
	 * @param roles 角色数组
	 * @return 是否
	 */
	public boolean hasAnyRoles(Long userId, String... roleCodes) {
		return sysMenuService.hasAnyRoles(userId, roleCodes);
	}

}
